<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Jaypha模型
 * @author 		jaypha
 * @qq			168007694
 * @email		psufool@163.com
 * @home page	www.psufool.cn
 */
class JayphaDB extends JayphaDB_Model{
	
	function __construct(){
		parent::__construct();
		$this->dbTablePrefix = $this->config->item('db_table_prefix');
	}
	
	//返回分页信息
	public function getPage($tableViewName,$fields='*',$conditions=array(),$orders='id desc',$offset=0,$limit=1,$site_url='') {
		$return = array('result'=>array(), 'page_bar'=>'');
		$return['result'] = parent::getDB($offset,$limit,$fields,$tableViewName,$conditions,$orders,false,1);
		$countNums = $this->getDBCount($tableViewName,$conditions);
		$this->load->library('pagination');
		if (!empty($site_url)) {
			$config['base_url'] = site_url($site_url);
		}
		$config['total_rows'] = $countNums;
		$config['per_page'] = $limit; 
		$this->pagination->initialize($config); 
		$return['page_bar'] = $this->pagination->create_links();
		return $return;
	}

	/**
	 * 获取数据表内容（返回对象）
	 * @param $offset			偏移量
	 * @param $limit			获取指定数量记录
	 * @param $fields			获取指定字段
	 * @param $tableViewName	待获取的表
	 * @param $conditions		获取条件
	 * @param $orders			获取记录的排序规则
	 * @param $distinct			是否过滤重复项，默认为false不过虑
	 */
	public function getDB($offset,$limit,$fields,$tableViewName,$conditions,$orders,$distinct){
		return parent::getDB($offset,$limit,$fields,$tableViewName,$conditions,$orders,$distinct,0);		
	}
	
	/**
	 * 获取数据表内容（返回数组）
	 * @param $offset			偏移量
	 * @param $limit			获取指定数量记录
	 * @param $fields			获取指定字段
	 * @param $tableViewName	待获取的表
	 * @param $conditions		获取条件
	 * @param $orders			获取记录的排序规则
	 * @param $distinct			是否过滤重复项，默认为false不过虑
	 */
	public function getDBArray($offset,$limit,$fields,$tableViewName,$conditions,$orders,$distinct){
		return parent::getDB($offset,$limit,$fields,$tableViewName,$conditions,$orders,$distinct,1);
	}

	/**
	 * 获取数据表记录数
	 * @param $tableViewName	待获取数据表
	 * @param $conditions		获取条件
	 */
	public function getDBCount($tableViewName,$conditions){
		return parent::getDBCount($tableViewName,$conditions);
	}

	/**
	 * 获取字段值
	 * @param $field			获取字段
	 * @param $tableViewName	获取字段所在表
	 * @param $conditions		获取字段条件
	 * @param $order			排序方式
	 */
	public function getDBValue($field,$tableViewName,$conditions,$orders){
		return parent::getDBValue($field,$tableViewName,$conditions,$orders);
	}

	/**
	 * 插入数据
	 * @param $tableViewName	待插入数据表
	 * @param $dataArray		字段及值（以数组进行传递）
	 * @param $escape			数据是否转义（取值范围：true<对数据进行转义>|false<不对数据进行转义>默认为true）
	 */
	public function insertDB($tableViewName,$dataArray,$escape=true){
		return parent::insertDB($tableViewName,$dataArray,$escape);
	}

	/**
	 * 更新数据
	 * @param $valuesData		数据组
	 * @param $tableViewName	待更新的数据表
	 * @param $conditions		更新条件
	 */
	public function updateDB($valuesData,$tableViewName,$conditions){
		return parent::updateDB($valuesData,$tableViewName,$conditions);
	}

	
	/**
	 * 设置管理操作日志
	 * @param $operationDatas	日志数据
	 */
	public function setAdminOperation($operationDatas){
		$operationTableName = $this->dbTablePrefix.'admin_operation_log';
		return $this->insertDB($operationTableName,$operationDatas,'');
	}
	
	/**
	 * 删除数据表中的数据
	 * @param $tableViewName	待删除数据的表
	 * @param $conditions		删除条件
	 */
	public  function delDB($tableViewName,$conditions){
		return parent::delDB($tableViewName,$conditions);
	}
	
	/**
	 * 简单获取数据表内容
	 * @param $tableViewName	表名
	 * @param $coditions		获取条件
	 */
	public function getSingleDB($tableViewName,$coditions){
		return parent::getDB(0,0,'',$tableViewName,$coditions,'',false);	
	}

	/**
	 * 获取系统配置项目值
	 * @param $name				项目变量
	 */
	public function getConfigValue($name){
		if(strlen($name)==0){
			return;
		}else{
			$fields = 'value';
			$tvName = $this->dbTablePrefix.'config';
			$where = array('upper(name)'=>strtoupper($name));
			$order = '';
			return $this->getDBValue($fields,$tvName,$where,$order);
		}
	}

	/**
	 * 获取管理员权限字符串
	 * @param $id				管理员ID
	 */
	public function getAdminPermission($id){
		if(is_null($id) || strlen($id)==0){
			return;
		}else{
			$fields = 'permission';
			$tvName = $this->dbTablePrefix.'admin';
			$where = array('id'=>$id);
			$order = '';
			return $this->getDBValue($fields,$tvName,$where,$order);
		}
	}
	
	/**
	 * 将从数据库中获取的记录集对象转换为数组
	 * @param unknown_type 从数据库中获取的记录集对象
	 */
	public function objToArr($obj){
		$data = array();
		foreach($obj as $row){
			$data[]=$row;
		}
		return $data;
	}
	
	/**
	 * 获取指定类别下的子类别
	 * @param $dataArr			数据源数据
	 * @param $parentId			要获取子类别的ID
	 * @param $deep				层次
	 */
	public function getChildrenList($dataArr,$parentId,$deep,&$result = array()){
		foreach($dataArr as $value){
			if($value->parentId==$parentId){
				$newDeep = $deep + 1;
				$value->deep = $deep;
				$result[] = $value;
				$this->getChildrenList($dataArr,$value->id,$newDeep,$result);
			}
		}
		return $result;
	}
}

/* End of file JayphaModel.php */
/* Location: ./application/controllers/admin/JayphaModel.php */